﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AimGameLibrary
{
    public enum NodeInputMode
    { 
        None,
        InputMode_1,
        Boolean_1,
        Int_1,
        Int_4,
        Float_1,
        Float_2,
        Float_5,
        Vector2_1,
        Rectangle_1,
        Body_1,
        Color_1,
        SpriteEffects_1,
        Pressed_Release,
        Isdown_Isup,
        AddScreen,
        ExitScreen,
        ExitGame,
        LoadingScreen

    }

    public enum NodeTypeValue
    {
        Root,
        Group_Value,
        /// Group Value
        Boolean,
        Int,
        Float,
        Vector2,
        Rectangle,
        String,
        Color,
        SpriteEffects,

        Texture2D,
        SpriteFont,
        DrawSprite,
        DrawString,
        Animation2D,
        Screen,
        ScreenControl,
        Update,
        Draw,
        Camera,
        TackCamera,
        IrrklangPlayer,
        VideoPlayer,
        Body,
        Gravity,
        Collision,

        /// Group Value
        KeyController,
        ButtonController,

        AddValue,
        SubtracValue,
        EqualsValue,
        MultiplyValue,
        DivisionValue,
        RemainderValue,

        IfElse
    }
    
    public enum StateGroup
    {
        Minimize,
        Maximize
    }

    public class NodeData : ICloneable
    {
        public String MyName;
        public int MyLevel;
        public int MyIndex;
        public NodeTypeValue MyType;
        public String Data;
        public int IndexImage;
        public String Details;

        public NodeData()
        {

        }

        public NodeData(String inputName, int inputMyLevel, int inputMyIndex, NodeTypeValue inputType)
        {
            MyName = inputName;
            MyLevel = inputMyLevel;
            MyIndex = inputMyIndex;
            MyType = inputType;
        }

        public NodeData(String inputName, int inputMyLevel, int inputMyIndex, NodeTypeValue inputType, String Details)
            : this(inputName, inputMyLevel, inputMyIndex, inputType)
        {
            this.Details = Details;
        }

        public NodeData(String inputName, int inputMyLevel, int inputMyIndex, NodeTypeValue inputType, int IndexImage, String Details)
            :this(inputName,inputMyLevel,inputMyIndex,inputType,Details)
        { 
            this.IndexImage = IndexImage;
        }

        #region ICloneable Members

        public object Clone()
        {
            return this.MemberwiseClone();
        }

        public NodeData Copy()
        {
            return (NodeData)this.Clone();
        }

        #endregion
    }
}
